/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jaywalkable.vkeyboard;

/**
 * Used to encode <code>String</code> or <code>Character</code>s of <code>
 * VKeyboardLayout</code> to original keyboard input.
 * 
 * @author Rubel Ahammad
 */
public interface VKeyboardEncoder extends VKeyboardKeyConverter{

    /**
     * Applies encoding rules to the given <code>str</code> and returns the encoded <code>String</code>.
     * 
     * @param str
     *            the <code>String</code> to be encoded after applying all the encoding rules.
     * @return the <code>String</code> after applying the encoding rules to <code>str</code>.
     */
    String applyEncodingRules(String str);

    /**
     * Encodes <code>Character</code> array of a particular alphabet to original
     * keyboard's key.  Returns null if no match is found associated with the
     * parameter.
     * @param chars the <code>Character</code> array to be encoded.
     */
//    void encode(Character ch);
}
